var da = {};
da.djJsNeedInterface = true;
da.djJsReady = false;
da.djJsDebug = false;
da.readyFun;
da.errorFun;
da.functionMap = {};
da.version;
da.djInjs = false;
da.dajia_eval = function (data) {
    try {
        return eval('(' + data + ')');
    } catch (e) {

    }
    return undefined;
};
/**
 * 移动端底层调用，确定移动端已经准备好了
 * @param data ['ok'|'error'|{msg:['ok']}]
 */
da.check = function (data) {
    this.djInjs = true;
    if (data == "ok") {
        this.djJsReady = true;
        if (this.readyFun)
            this.readyFun();
        return;
    }
    if (data == "error") {
        this.djJsReady = false;
        if (this.errorFun)
            this.errorFun();
        return;
    }
    if (typeof (data) != "object") {
        data = this.dajia_eval('(' + data + ')');
    }
    if (data.msg == "ok") {
        this.djJsReady = true;
        this.functionMap = data.fun || {};
        if (this.readyFun)
            this.readyFun();
    } else {
        this.djJsReady = false;
        if (this.errorFun)
            this.errorFun();
    }
};
/**
 * 判断方法是否可以执行
 * @returns {boolean}
 */
da.canTrans = function () {
    return this.djJsReady && typeof(djInternal) != 'undefined';
};


/**
 * 开启调试模式，调用的所有api的返回值会在客户端alert出来
 * @param v debug [true|false]
 */
da.config = function (v) {
    this.djJsDebug = v.debug;
    this.djJsNeedInterface = true;
};

da.ready = function (v) {
    this.readyFun = v;
    if (this.djInjs && da.djJsReady) {
        this.readyFun();
    }
};
da.error = function (v) {
    this.errorFun = v;
    if (this.djInjs && da.djJsReady == false) {
        this.errorFun();
    }
};

/**
 * 判断方法是否已经实现
 * @param v.funName：需要检查的方法名
 */
da.checkFun = function (v) {
    if (this.functionMap && this.dajia_eval('this.functionMap.' + v.funName)) {
        v.success();
    } else if (this.canTrans()) {
        djInternal.callHandler('checkFun', {'funName': v.funName},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success();
                        break;
                    case 'fail':
                        v.fail && v.fail();
                        break;
                    default:
                        v.fail && v.fail();
                        break;
                }
            });
    } else {
        v.fail && v.fail();
    }
};

/**
 *
 * @param v.reScan：
 * @param v.sid：
 * @return success.res：
 * @return fail.res：
 */
da.scanDevice = function (v) {
    if (this.canTrans())
        djInternal.callHandler('scanDevice', {'reScan': v.reScan, 'sid': v.sid}, function (callback) {
            switch (callback.code) {
                case 'success':
                    v.success(callback.res);
                    break;
                case 'fail':
                    v.fail && v.fail(callback.res);
                    break;
                default:
                    v.fail && v.fail(callback.res);
                    break;
            }
        });
};

/**
 *
 * @param v.pid：
 * @param v.sid：
 * @param v.rcid：
 * @param v.wcid：
 * @return success.res：
 * @return fail.res：
 */
da.connectPeripheralAndRead = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('connectPeripheralAndRead', {'pid': v.pid, 'sid': v.sid, 'rcid': v.rcid, 'wcid': v.wcid},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 *
 * @param v.pid：
 * @param v.sid：
 * @param v.rcid：
 * @param v.wcid：
 * @param v.content：
 * @return success.res：
 * @return fail.res：
 */
da.connectPeripheralAndWrite = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('connectPeripheralAndWrite', {
                'pid': v.pid,
                'sid': v.sid,
                'rcid': v.rcid,
                'wcid': v.wcid,
                'content': v.content
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 显示信息流的阅读列表
 * @param v.feedID：信息流id
 * @param v.communityID：社区id
 */
da.showReadList = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showReadList', {'feedID': v.feedID, 'communityID': v.communityID});
    }
};

/**
 * 显示信息流的赞列表
 * @param v.feedID：信息流id
 * @param v.communityID：社区id
 */
da.showPraiseList = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showPraiseList', {'feedID': v.feedID, 'communityID': v.communityID});
    }
};

/**
 * 显示信息流的回复列表
 * @param v.feedID 信息流id
 * @param v.communityID 社区
 */
da.showCommentList = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showCommentList', {'feedID': v.feedID, 'communityID': v.communityID});
    }
};

/**
 * 跳转到个人空间
 * @param v.personID：人员ID
 * @param v.personName：人员姓名
 */
da.showPerson = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showPerson', {'personID': v.personID, 'personName': v.personName});
    }
};

/**
 * 跳转到群空间
 * @param v.groupID：群组ID
 * @param v.groupName：群组名
 * @return success.res：
 * @return fail.res：
 */
da.showGroup = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showGroup', {'groupID': v.groupID, 'groupName': v.groupName},
            function (callback) {
                switch (callback.code) {
                    case 'success': v.success(callback.res); break;
                    case 'fail': v.fail && v.fail(callback.res); break;
                    default: v.fail && v.fail(callback.res); break;
                }
            }
        );
    }
};

/**
 * 加入社区
 * @param v.communityID：社区ID
 */
da.joinCommunity = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('joinCommunity', {'communityID': v.communityID});
    }
};

/**
 * 切换到指定社区
 * @param v.communityID：社区ID
 * @param v.communityName：社区名
 */
da.enterCommunity = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('enterCommunity', {'communityID': v.communityID, 'communityName': v.communityName});
    }
};

/**
 * 进入体验社区
 * @param v.communityID：社区ID
 * @param v.username：用户名
 * @param v.password：密码
 */
da.enterExperience = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('enterExperience', {
            'communityID': v.communityID,
            'username': v.username,
            'password': v.password
        });
    }
};

/**
 * 加入群组
 * @param v.communityID：社区ID
 * @param v.communityID：群组ID
 */
da.joinGroup = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('joinGroup', {'communityID': v.communityID, 'groupID': v.groupID});
    }
};

/**
 * 跳转到图片预览功能
 * @param v.current：当前显示的图片
 * @param v.ids：需要预览的图片ID列表
 * @param v.isUrl：
 *
 */
da.showPicList = function (v) {
    if (this.canTrans())
        djInternal.callHandler('showPicList', {'current': v.current, 'ids': v.ids, 'isUrl': v.isUrl});
};

/**
 * 跳转到附件预览功能
 * @param v.fileID：文件ID
 * @param v.fileName：文件名
 * @param v.fileSize：文件大小
 */
da.showFile = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showFile', {'fileID': v.fileID, 'fileName': v.fileName, 'fileSize': v.fileSize});
    }
};

/**
 * 跳转到地理位置查看功能
 * @param v.lat：纬度
 * @param v.lon：经度
 * @param v.name：地标名
 * @param v.addr：位置描述
 */
da.showLocation = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showLocation', {'lat': v.lat, 'lon': v.lon, 'name': v.name, 'addr': v.addr});
    }

};

/**
 * 获取地理位置功能
 * @param v.lat：纬度
 * @param v.lon：经度
 * @param v.name：地标名
 * @param v.addr：位置描述
 * @return success.res：
 * @return fail.res：
 */
da.getLocation = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getLocation', {
                'current': v.current,
                'lat': v.lat,
                'lon': v.lon,
                'name': v.name,
                'addr': v.addr
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 调取扫一扫功能
 * @param v.needResult：[0|1] // 默认为0、扫描结果由大家社区处理，1、则直接返回扫描结果
 * @return success.res：扫描结果
 */
da.showScan = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showScan', {'needResult': v.needResult},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 解析二维码图片
 * @param v.url：
 * @return success.res：
 */
da.showQRCode = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showQRCode', {'url': v.url},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 获取网络类型
 * @return success.res：none:无网络 2g:2g网络 3g:3g网络 4g:4g网络 wifi:wifi
 */
da.getNetWorkType = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getNetWorkType', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 选择图片（ios不支持）
 * @param v.type [1|2] 1、只拍照,2、相册选取图片
 * @return res.returnType 返回类型 : 2-base64
 * @return res.current 当前已存在的张书
 * @return res.returnType 获取图片的最大张数
 */
da.chooseImage = function (v) {
    if (this.canTrans()){
        djInternal.callHandler('chooseImage', {type: v.type, current: v.current, max: v.max, returnType: v.returnType},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 图片预览
 * @param v.current 当前需要预览的图片再整体urls中的索引位置
 * @param v.urls 当前需要预览的图片url集合
 */
da.previewImage = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('previewImage', {'current': v.current, 'urls': v.urls});
    }
};

/**
 * 上传文件
 * @param v.files：
 * @param v.isShowProgress：
 */
da.uploadFile = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('uploadFile', {'files': v.files, 'isShowProgress': v.isShowProgress},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 下载文件
 * @param v.picId：图片ID
 * @param v.isShowProgressTips：
 */
da.downloadImage = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('downloadImage', {'picId': v.picId, 'isShowProgressTips': v.isShowProgressTips},
            function (callback) {
                switch (callback.code) {
                    case 'success': v.success(callback.res); break;
                    case 'fail': v.fail && v.fail(callback.res); break;
                    default: v.fail && v.fail(callback.res); break;
                }
            }
        );
    }
};

/**
 * 关闭当前窗口
 */
da.closeWindow = function () {
    if (this.canTrans()) {
        djInternal.callHandler('closeWindow');
    }
};

/**
 * 关闭当前窗口并弹出提示信息
 * @param v.msg：消息
 */
da.closeWindowWithMessage = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('closeWindowWithMessage', {'msg': v.msg});
    }
};

/**
 * 创建新窗口
 * @param v.type：type="1" 时链接添加host:port并覆盖access_token
 */
da.createWindow = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('createWindow', {'type': v.type, 'url': v.url});
    }

};

/**
 * 显示提示信息
 * @param v.type 显示提示的样式 0、普通（默认）；1、警告；2、错误；9、顶部红条
 * @param v.msg 提示语
 */
da.showMessage = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showMessage', {'msg': v.msg, 'type': v.type});
    }
};

/**
 * 显示分类提示
 * @param v.type
 * @param v.style
 * @param v.msg
 */
da.showPrompt = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showPrompt', {
            type: v.type,	//标记提示	0:失败返回;  1:	提示我的服务单;  2:成功返回 ;  98:取消页面动作操作   99：恢复页面动作操作
            style: v.style,	//显示提示的样式 0：普通(默认)  1:警告 2:错误   9:顶部红条
            msg: v.msg		//提示语， 或者动作类型flush
        });
    }

};


da.statusWindow = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('statusWindow', {'type': v.type, 'msg': v.msg});
    }
};

/**
 * 网页回退
 */
da.historyBack = function () {
    if (this.canTrans()) {
        djInternal.callHandler('historyBack');
    }
};

/**
 * app登录
 * ios：忽略action参数
 * android：只实现了action=-1的情况
 * @param v.name 用户名
 * @param v.pwd 密码
 * @param v.action  -1：进入登录也并填充数据
 */
da.appLogin = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('appLogin', {'name': v.name, 'pwd': v.pwd, 'action': v.action},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 跳转到指定native页面
 * @param v.code：
 */
da.forward = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('forward', {'code': v.code},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 通知app表单提交成功
 * @param v.formID 表单id
 * @param v.formRecordID 表单信息id
 * @param v.title 表单标题
 */
da.saveFormFeed = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('saveFormFeed', {'formID': v.formID, 'formRecordID': v.formRecordID, 'title': v.title},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

da.setWebParam = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('setWebParam', {
                'title': v.title,
                'description': v.description,
                'address': v.address,
                'picID': v.picID,
                'logoID': v.logoID,
                'pageType': v.pageType,
                'pageID': v.pageID,
                'isPreview': v.isPreview
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

da.requestPortalTopic = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('requestPortalTopic', {'version': v.version, 'isCache': v.isCache},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 触发native跳转到对应的应用下
 * 主要使用场景再portal中
 * @param v.tagID 应用ID
 */
da.touchPortalTopic = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('touchPortalTopic', {'tagID': v.tagID});
    }
};

/**
 * 请求我的群组数据 主要使用场景再portal tab签中
 * @param v.page：页码
 * @param v.count：分页条数
 * @param v.view
 * @param v.style
 * @param v.isCache
 */
da.requestPortalGroup = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('requestPortalGroup', {
                'page': v.page,
                'count': v.count,
                'view': v.view,
                'style': v.style,
                'isCache': v.isCache
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 *
 * @param v.page [0|1] 0、请求首页；>0：tab签请求
 */
da.requestAllGroup = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('requestAllGroup', {
                'page': v.page,
                'count': v.count,
                'view': v.view,
                'style': v.style,
                'isCache': v.isCache
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 请求加入群组，目前没有使用
 * @param v
 */
da.requestJoinGroup = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('requestJoinGroup', {'groupID': v.groupID, 'groupType': v.groupType},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 跳转到全部群组/搜索群组功能
 * @param v.type    0、标识全部群组；1、标识搜索群组
 */
da.showAllGroup = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showAllGroup', {'type': v.type},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 跳转到群组功能
 */
da.showGroupList = function () {
    if (this.canTrans()) {
        djInternal.callHandler('showGroupList');
    }
};


/**
 * 跳转到群组搜索功能
 */
da.showGroupSearch = function () {
    if (this.canTrans()) {
        djInternal.callHandler('showGroupSearch');
    }
};

/**
 * 获取对应应用的信息流，只取最新的指定条数，主要场景再portal中
 * @param v.tagID       应用ID
 * @param v.tagName     应用名称
 * @param v.count       条数
 * @param v.style       回调参数
 * @param v.isCache     是否使用缓存[true|false]
 */
da.requestPortalFeed = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('requestPortalFeed', {
                'tagID': v.tagID,
                'tagName': v.tagName,
                'count': v.count,
                'style': v.style,
                'isCache': v.isCache
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 获取对应应用的商品
 * @param v
 */
da.requestPortalShop = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('requestPortalShop', {
                'tagID': v.tagID,
                'page': v.page,
                'count': v.count,
                'isCache': v.isCache,
                'rowType': v.rowType
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 跳转到商品详情页面
 * @param v.productID       商品ID
 */
da.showProduct = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showProduct', {'productID': v.productID});
    }
};

/**
 * 跳转到信息流详情页面
 * @param v.feedID          信息流ID
 */
da.showFeedDetail = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showFeedDetail', {'feedID': v.feedID});
    }
};

/**
 * 跳转到新建信息流页面
 * @param v.topicID     topicPresetID
 * @param v.tagID       companyMenuID
 */
da.createFeed = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('createFeed', {'topicID': v.topicID, 'tagID': v.tagID});
    }
};


/**
 * 获取图片
 * @param v.picID       图片id
 * @param v.size        1：小图；2：大图；3：中图
 * @param v.type        0：普通图片；1：人员头像；2：群组头像；3：社区头像
 * @param v.cdnAddr     cdn地址（不填）
 */
da.getPic = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getPic', {'picID': v.picID, 'size': v.size, 'type': v.type, 'cdnAddr': v.cdnAddr},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }

};
/**
 * 第三方系统调起app支付
 * @param v.orderID：         订单ID
 * @param v.merchantId：      商户ID
 * @param v.subject：         标题
 * @param v.desc：            描述
 * @param v.orderAmount：     订单总金额
 * @param v.paymentType：     支付方式 101:支付宝(默认) 201:微信
 */
da.thirdPartyOrderAppPay = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('payCheck', {
                'orderID': v.orderID,
                'merchantId': v.merchantId,
                'orderAmount': v.orderAmount,
                'paymentType': v.paymentType,
                "subject": v.subject,
                "desc": v.desc,
                "checkOrder" : "0"
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 系统支付校验，校验成功后自动调起ap支付
 *
 * orderID：         订单ID
 * merchantId：      商户ID
 * companyID：       社区id
 * subject：         商品名称
 * desc：            商品描述
 * orderAmount：     订单总金额
 * paymentType：     支付方式 101:支付宝(默认) 201:微信
 * @param v
 */
da.payCheck = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('payCheck', {
                'orderID': v.orderID,
                'merchantId': v.merchantId,
                'companyID': v.companyID,
                'orderAmount': v.orderAmount,
                'paymentType': v.paymentType,
                "subject": v.subject,
                "desc": v.desc,
                "checkOrder" : "1"
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
da.pingpay = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('pingpay', {'content': v.content},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 发起app登录
 * 如果app端已经登录会直接返回 {personID:'',companyID:'',accessToken:''}
 * @param v.currentUrl 没有使用
 */
da.needLogin = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('needLogin', {'currentUrl': v.currentUrl},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }

};

/**
 * 调用App的显示分先菜单的操作
 * @param v
 *  v.optList ['menuItem:share:appMessage'     分享到微信好友
 *            |'menuItem:share:timeline'     分享到微信朋友圈
 *            |'menuItem:share:weiboApp'     分享到新浪微博
 *            |'menuItem:share:QZone'        分享到QQ空间
 *            |'menuItem:share:qq'           分享到QQ
 *            |'menuItem:share:message'      分享到短信
 *            |'menuItem:share:email'        分享到Email
 *            |'menuItem:openWithBrowser'    用浏览器打开操作
 *            |'menuItem:forward'               转发
 *            |'menuItem:refresh'               刷新操作
 *            |'menuItem:tipoff'    ]          举报
 *  v.shareInfo.url
 *  v.shareInfo.imageThumbUrl
 *  v.shareInfo.shareDescription
 *  v.shareInfo.shareTitle
 */
da.showOptMenu = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showOptMenu', {'optList': v.optList, 'shareInfo': v.shareInfo},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 调用App的显示分先菜单的操作
 * @param v
 *  v.optList ['menuItem:share:appMessage'     分享到微信好友
 *            |'menuItem:share:timeline'     分享到微信朋友圈
 *            |'menuItem:share:weiboApp'     分享到新浪微博
 *            |'menuItem:share:QZone'        分享到QQ空间
 *            |'menuItem:share:qq'           分享到QQ
 *            |'menuItem:share:message'      分享到短信
 *            |'menuItem:share:email'        分享到Email
 *            |'menuItem:openWithBrowser'    用浏览器打开操作
 *            |'menuItem:forward'               转发
 *            |'menuItem:refresh'            刷新操作
 *            |'menuItem:tipoff']               举报
 *  v.shareInfo.url
 *  v.shareInfo.imageThumbUrl
 *  v.shareInfo.shareDescription
 *  v.shareInfo.touchShow                      是否手动出发
 *  v.shareInfo.shareTitle
 */
da.initShareOptMenu = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('initShareOptMenu', {'optList': v.optList, 'shareInfo': v.shareInfo},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }

};
/**
 * 信息流的操作
 * type 1 赞  2 收藏
 * action 1 添加操作 2 取消操作
 * @param v
 */
da.feedAction = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('feedAction', {'type': v.type, 'action': v.action, 'objID': v.objID },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 添加评论
 * feedID feed的ID
 * commentID
 * @param v
 */
da.addComment = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("addComment", {'feedID': v.feedID, 'commentID': v.commentID}, function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * fileID 文件ID
 * @param v
 * @param type 2 声音
 * @return 文件路径
 */
da.getFile = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("getFile", {'fileID': v.fileID, 'type': v.type}, function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 请求信息流
 *
 * @param v.tagID       应用ID
 * @param v.page        页码
 * @param v.count       单页条数
 * @param v.maxTime     时间
 * @param v.style       回调参数
 * @param v.isCache
 */
da.requestFeed = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('requestFeed', {
                'tagID': v.tagID,
                'page': v.page,
                'count': v.count,
                'maxTime': v.maxTime,
                'style': v.style,
                'isCache': v.isCache
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 跳转到对应话题的信息流列表
 * @param v
 */
da.showBlog = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showBlog', {'feedID': v.feedID, 'blogID': v.blogID});
    }
};

/**
 * 获取app的主题颜色
 * @param v
 */
da.getThemeColor = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getThemeColor', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 发起IM聊天
 * @param v
 * v.conversationType  回话类型 目前只支持"PRIVATE" 私聊 "CUSTOM"发起客服聊天
 * v.targetID 回话的目标ID,目前只支持personID
 * v.targetName 回话的名字,目前只支持personName
 * v.companyID 当前社区ID
 * 需要在发起聊天同时自动发一条消息,请完善下述参数
 * v.messageTitle
 * v.messageDigest
 * v.messageImageURL
 * v.messageUrl
 * v.messageExtra
 * v.textMessageContent
 * 规则1:messageTitle messageUrl 填写的话,会发送一条富文本消息
 *      并且可以填写messageDigest messageImageURL messageExtra
 *      messageExtra参数暂时没有使用,将来可能用于扩展
 * 规则2:textMessageContent 填写的话 会发送一条纯文本消息
 * 规则3:messageTitle messageUrl textMessageContent都不填写时将不会发送任何消息
 * 规则4:调用客服时暂时不要使用messageTitle messageUrl 客服现在不支持;
 */
da.startIMConversation = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("startIMConversation", {
                'conversationType': v.conversationType,
                'targetID': v.targetID,
                'targetName': v.targetName,
                'companyID': v.companyID,
                'messageTitle': v.messageTitle,
                'messageDigest': v.messageDigest,
                'messageImageURL': v.messageImageURL,
                'messageUrl': v.messageUrl,
                'messageExtra': v.messageExtra,
                'textMessageContent': v.textMessageContent
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};


/**
 * 主题是否支持发送
 * @param v.tagID       主题ID
 * @return (res:{isSupport:[true|false]}
 */
da.getTopic = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("getTopic", {'tagID': v.tagID},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 *
 * @param v
 */
da.getValueByThird = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("getValueByThird", {'key': v.key},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 显示错误信息
 * @param v.file        文件名
 * @param v.code        错误码
 * @param v.error       错误描述
 */
da.showPortalError = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("showPortalError", {'file': v.file, 'code': v.code, 'error': v.error},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 通用portal页主题列表通用接口
 * @param v.tagID       主题ID
 * @param v.page        页数
 * @param v.count       单页条数
 */
da.requestPortalList = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("requestPortalList", {
                'tagID': v.tagID,
                'page': v.page,
                'count': v.count,
                'isCache': v.isCache,
                'object': v.object
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail(callback.res);
                        break;
                    default:
                        v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 打开portal单个详情页面通用接口
 * {worksShowID: worksShow.worksShowID}
 * @param v.object.worksShowID
 */
da.showPortalDetail = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("showPortalDetail", {'tagID': v.tagID, 'object': v.object},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail(callback.res);
                        break;
                    default:
                        v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 上传文件
 * ios 支持
 * android不支持
 * @param v.files 本地图片路径
 */
da.uploadFileByApp = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('uploadFileByApp', {'files': v.files, 'isShowProgress': v.isShowProgress},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
    }
};
// ----------------鼎捷项目新增js方法-----------------//
/**
 * 我发的消息
 * 默认进入我发的消息页面，
 * 当参数getMySelfSendFeed为字符类型1的时候进入我发的消息页面，其他参数时进入带头像的信息流页面
 */
da.getMySelfSendFeed = function () {
    if (this.canTrans()) {
        djInternal.callHandler('getMySelfSendFeed', {'getMySelfSendFeed': v.getMySelfSendFeed},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 我的收藏
 */
da.getMySelfCollections = function () {
    if (this.canTrans()) {
        djInternal.callHandler('getMySelfCollections');
    }
};
/**
 * 发送队列
 */
da.findSendFeedQuque = function () {
    if (this.canTrans()) {
        djInternal.callHandler('findSendFeedQuque');
    }
};
/**
 * 邀请
 */
da.sendInvitation = function () {
    if (this.canTrans()) {
        djInternal.callHandler('sendInvitation');
    }
};
/**
 * 系统设置
 */
da.systemSetting = function () {
    if (this.canTrans()) {
        djInternal.callHandler('systemSetting');
    }
};
/**
 * 通知
 */
da.systemNtive = function () {
    if (this.canTrans()) {
        djInternal.callHandler('systemNtive');
    }
};
/**
 * 是否在大陆
 * @return success.res.isChina：1、在大陆
 * @return success.res.lon：经度
 * @return success.res.lat：纬度
 */
da.inChina = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('inChina', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 当前语言
 * @return success.res：当前语言别
 */
da.currentLanguage = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('currentLanguage', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 录音接口
 * @param v
 */
da.record = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('record', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 获取预置内容接口中数据
 * @param v
 */
da.getTopicPresetInfo = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getTopicPresetInfo', {
                'url': v.url,
                'topicPresetID': v.topicPresetID,
                'portalRowID': v.portalRowID
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }

};

/**
 * 上传名片图片到名片王服务器，获取名片的json数据
 * @param v
 */
da.getCardInfo = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getCardInfo', {'type': v.type},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};


/**
 * 跳转集成列表详情页
 * @param v
 */
da.showListMessageDetail = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('showListMessageDetail', {'url': v.url},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 获取系统最新一条消息
 * @param v
 */
da.getLatestCommunityNotification = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getLatestCommunityNotification', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/***   下面所有未读消息都取自手机端的SQLITE数据库，这个消息是定时从手机端取自服务端取后就会把服务端库的置为已读，但是手机数据库仍是未读                            *****/
/**
 * 获取未读消息数
 * @param v
 */
da.getNotificationCountBySourceType = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getNotificationCountBySourceType', {'sourceType': v.sourceType},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 取最新消息
 * @param v
 */
da.getLatestNotificationBySourceType = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getLatestNotificationBySourceType', {'sourceType': v.sourceType},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 获取所有消息
 * @param v
 */
da.getAllNotificationBySourceType = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getAllNotificationBySourceType', {'sourceType': v.sourceType},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 所有分类消息设置成已读
 * @param v
 */
da.setNotificationReadBySourceType = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('setNotificationReadBySourceType', {'sourceType': v.sourceType},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 删除某一条已查看的消息
 * @param v
 */
da.deleteNotification = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('deleteNotification', {'sourceType': v.sourceType, 'notificationID': v.notificationID},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 获取设备唯一ID
 * @return success.res：当前设备唯一ID
 */
da.getDeviceUniqueID = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('getDeviceUniqueID', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }

};

/**
 * 选择人员
 * @param v.includeSelf：是否包括自己
 */
da.choosePersons = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("choosePersons", {
                'person_ids': v.person_ids,
                'isMultiple': v.isMultiple,
                'includeSelf': v.includeSelf
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 回首页
 * @param v
 */
da.goBackToMain = function (v) {
    if (this.canTrans())
        djInternal.callHandler('goBackToMain');
};
/**
 * 分享文档
 * @param v
 */
da.shareDocument = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("shareDocument", {
            'fileID': v.fileID,
            'sendNotice': v.sendNotice,
            'includeSelf': v.includeSelf //true指包含自己（可选择分享给自己）,false不包含自己，默认为false
        }, function (callback) {
            switch (callback.code) {
                case 'success':
                    v.success(callback.res);
                    break;
                case 'fail':
                    v.fail && v.fail(callback.res);
                    break;
                default:
                    v.fail && v.fail(callback.res);
                    break;
            }
        });
    }
};
/**
 * 隐藏或显示左上角回退按钮
 * @param v
 */
da.hideOrShowBackButton = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler("hideOrShowBackButton", {
            'show': v.show  //true or false
        }, function (callback) {
            switch (callback.code) {
                case 'success':
                    v.success(callback.res);
                    break;
                case 'fail':
                    v.fail && v.fail(callback.res);
                    break;
                default:
                    v.fail && v.fail(callback.res);
                    break;
            }
        });
    }
};


/**
 * 保存状态变量
 * @param v
 *  pageIndex为在第几个页面可以取值(字符类型)
 */
da.saveCustomizedData = function (v) {
    if (this.canTrans())
        djInternal.callHandler('saveCustomizedData', {
                'customizedKey': v.customizedKey,
                'customizedValue': v.customizedValue,
                'saveToPage':v.saveToPage
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
};

/**
 * 获取保存的状态变量
 * @param v
 */
da.getCustomizedData = function (v) {
    if (this.canTrans())
        djInternal.callHandler('getCustomizedData', {
                'customizedKey': v.customizedKey,
                'getDataFromPage': v.getDataFromPage
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
};
/**
 * 跳转到特定页面(da.createwindow打开方式）
 * @param v pageIndex:为0到count-1的数字，超过或者其他将返回错误，成功就会跳转
 *          refreshPage:这个参数代表是否刷新，默认不刷新，设置为true时则进入界面时会刷新
 */
da.goBackToSpecifiedPage = function (v) {
    if (this.canTrans())
        djInternal.callHandler('goBackToSpecifiedPage', {
                'pageIndex': v.pageIndex,
                'refreshPage': v.refreshPage
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
};
/**
 * 获取当前控制器的栈的数量，默认为0，代表当前为根控制器(da.createwindow打开方式）
 */
da.getSpecifiedPageCount = function (v) {
    if (this.canTrans())
        djInternal.callHandler('getSpecifiedPageCount', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
};

/**
 *
 *打开全部消息接口//无参数
 *无返回
 */
da.openAllFeedPage = function(v) {
    if (this.canTrans())
        djInternal.callHandler('openAllFeedPage');
};

/**
 *
 *切换社区接口//无参数
 *无返回
 */
da.switchCommunity = function(v) {
    if (this.canTrans())
        djInternal.callHandler('switchCommunity');
};


/**
 *切换横竖屏接口// 有参数
 *参数说明: 传入switchScreen为key的 value是 0或者1 (数字必须是字符串形式)字段 1代表竖屏 0 代表横屏
 * 无返回
 */
da.switchScreen =  function(v){
    if (this.canTrans()){
        djInternal.callHandler('switchScreen' , {
                'switchScreen': v.switchScreen
            } ,
            function(callback){
                switch (callback.code){
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            })
    }
};

/**
 *跳转搜索页面// 有参数
 *参数说明: isInput为跳转时是否弹出键盘的参数，为布尔类型的true或false
 * 无返回
 */
da.goToGlobalSearch =  function(v){
    if (this.canTrans()){
        djInternal.callHandler('goToGlobalSearch' , {
                'isInput': v.isInput
            } ,
            function(callback){
                switch (callback.code){
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            })
    }
};


/**
 * 开车啦   开始行程接口
 * @param v  isStart为字符类型的"0"或"1",0代表开始行程，1代表恢复行程
 *          distinceInterval:每隔多长距离去保存一次数据，单位是米，字符类型
 */
da.startDrive = function (v) {
    if (this.canTrans())
        djInternal.callHandler('startDrive', {
                'isStart': v.isStart,
                'distanceInterval': v.distanceInterval
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
};

/**
 * 开车啦  结束行程
 *
 */
da.endDrive = function (v) {
    if (this.canTrans())
        djInternal.callHandler('endDrive', {
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
};


/**
 * 开车啦  获取行程信息
 *
 */
da.getRouteData = function (v) {
    if (this.canTrans())
        djInternal.callHandler('getRouteData', {
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            });
};

/**
 * ios 获取手机本地日历信息
 */
da.getCalendarList = function(v){
    if (this.canTrans()){
        djInternal.callHandler('getCalendarList', {
                'startDate':v.startDate,
                'endDate':v.endDate
            },
            function(callback){
                switch (callback.code){
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            })
    }
};
/**
 * 参数type（必须，目前支持type=1时，为日历,type=2定位弹框，type=3位提醒事项弹框（暂时未使用，预留））
 正确提示：code：success

 错误提示：code：fail  res：包括domain和code
 code=1000。type未传或者传的值不包括上面的类型
 Code 1001 已开启，不需要弹框
 Code 1002 用户选择了取消按钮
 * @param v
 */
da.systemPermissionsAlert = function (v) {
    if (this.canTrans()){
        djInternal.callHandler('systemPermissionsAlert',{
            'type':v.type
        },
        function (callback) {
            switch (callback.code){
                case  'success':
                    v.success(callback.res);
                    break;
                case  'fail':
                    v.fail && v.fail(callback.res);
                    break;
                default:
                    v.fail && v.fail(callback.res);
                    break;
            }
        })
    }
};

/**
 * 开车啦  清除行程信息
 *
 */
da.cleanDriveData = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('cleanDriveData', {
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;

                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }

};

/**
 * 跳转手机设置开启定位权限页面
 *
 */
da.openLocationSet  = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('openLocationSet ', {},
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};
/**
 * 退出登录
 * @param v.needAlert：0 不弹窗提示，1 弹窗提示
 * @param vstyleType：0：不强制退出，1：强制退出
 */
da.logOut = function (v) {
    if (this.canTrans()) {
        djInternal.callHandler('logOut', {
                'needAlert':v.needAlert,'styleType':v.styleType
            },
            function (callback) {
                switch (callback.code) {
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};

/**
 * 调到手机高德/谷歌/苹果地图导航
 * targetName：目的地名称
 * targetLatitude：目的地纬度
 * targetLongitute：目的地经度
 * directionsmode：导航方式； 目前支持driving：驾车；walking，步行。  默认是驾车。
 */
da.openThreeMapNav = function(v){
    if (this.canTrans()){
        djInternal.callHandler('openThreeMapNav',{
                'targetName':v.targetName,
                'targetLatitude':v.targetLatitude,
                'targetLongitute':v.targetLongitute,
                'directionsmode':v.directionsmode,
            },
            function(callback){
                switch (callback.code){
                    case 'success':
                        v.success(callback.res);
                        break;
                    case 'fail':
                        v.fail && v.fail(callback.res);
                        break;
                    default:
                        v.fail && v.fail(callback.res);
                        break;
                }
            }
        );
    }
};